/*
 * Nombre: AsignaturaOfertaAcademica.java
 * Version: 1.1.0
 * Diagrama: GAPI v1.5.2
 * Autor: Luis Jorge Uicab Azcorra
 * Creado: 23-feb-2013
 * Modificado: 13-abr-2013
 * Caso de uso: MGOA1, MGOA2, MGOA3, MGOA4, MGOA5, MGH1
 */
package Dominio;

import java.util.ArrayList;

/**
 * @author Luis J Description: Clase que representa al objeto de tipo Asignatura
 * Oferta Academica dentro del Sistema Date: 23/02/03
 */
public class AsignaturaOfertaAcademica {

    private int claveAsignaturaOferta;
    private int claveAsignatura;
    private String nombre;
    private String programaEducativo;
    private String semestre;
    private Profesor maestro;
    private ArrayList<FragmentoHorario> horario;

    /**
     * Constructor de la Clase
     *
     * @param claveAsignatura La Clave de la Asignatura
     * @param nombre El Nombre de la Asignatura
     * @param programaEducativo El Programa Educativo de la Asignatura
     * @param semestre El Semestre de la Asignatura
     * @param maestro El maestro de la Asignatura
     * @param horario La lista de Horarios de la Asignatura
     */
    public AsignaturaOfertaAcademica(int claveAsignatura, String nombre, String programaEducativo, String semestre, Profesor maestro, ArrayList<FragmentoHorario> horario) {
        this.claveAsignatura = claveAsignatura;
        this.nombre = nombre;
        this.programaEducativo = programaEducativo;
        this.semestre = semestre;
        this.maestro = maestro;
        this.horario = horario;
    }

    /**
     * Constructor de la Clase
     */
    public AsignaturaOfertaAcademica() {
        horario = new ArrayList<FragmentoHorario>();
    }

    /**
     * Metodo que sirve para obtener la clave de la Asignatura de la Oferta
     *
     * @return La Clave de la Asignatura de la Oferta
     */
    public int getClaveAsignaturaOferta() {
        return claveAsignaturaOferta;
    }

    /**
     * Metodo que sirve para establecer la clave de la Asignatura de la Oferta
     *
     * @param claveAsignaturaOferta La Clave de la Asignatura de la Oferta
     */
    public void setClaveAsignaturaOferta(int claveAsignaturaOferta) {
        this.claveAsignaturaOferta = claveAsignaturaOferta;
    }

    /**
     * Metodo que sirve para obtener la Clave de la Asignatura
     *
     * @return La Clave de la Asignatura
     */
    public int getClaveAsignatura() {
        return claveAsignatura;
    }

    /**
     * Metodo que sirve para establecer la Clave de la Asignatura
     *
     * @param claveAsignatura La Clave de la Asignatura
     */
    public void setClaveAsignatura(int claveAsignatura) {
        this.claveAsignatura = claveAsignatura;
    }

    /**
     * Metodo que sirve para obtener el Nombre de la asignatura
     *
     * @return El Nombre
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * Metodo que sirve para establcer el Nombre de la asignatura
     *
     * @param nombre El Nombre
     */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    /**
     * Metodo que sirve para obtener el programa educativo de la Asignatura
     *
     * @return El programa Educativo
     */
    public String getProgramaEducativo() {
        return programaEducativo;
    }

    /**
     * Metodo que sirve para establecer el programa educativo de la Asignatura
     *
     * @param programaEducativo El programa Educativo
     */
    public void setProgramaEducativo(String programaEducativo) {
        this.programaEducativo = programaEducativo;
    }

    /**
     * Metodo que sirve para obtener el Semestre de la Asignatura
     *
     * @return El Semestre
     */
    public String getSemestre() {
        return semestre;
    }

    /**
     * Metodo que sirve para establecer el Semestre de la Asignatura
     *
     * @param semestre El Semestre
     */
    public void setSemestre(String semestre) {
        this.semestre = semestre;
    }

    /**
     * Metodo que sirve para obtener el Maestro asignado a la Asignatura
     *
     * @return El Maestro
     */
    public Profesor getMaestro() {
        return maestro;
    }

    /**
     * Metodo que sirve para establecer el Maestro asignado a la Asignatura
     *
     * @param maestro El Maestro
     */
    public void setMaestro(Profesor maestro) {
        this.maestro = maestro;
    }

    /**
     * Metodo que sirve para obtener la lista de Horarios de la Asignatura
     *
     * @return La lista de Horarios
     */
    public ArrayList<FragmentoHorario> getHorario() {
        return horario;
    }

    /**
     * Metodo que sirve para establecer la lista de Horarios de la Asignatura
     *
     * @param horario La lista de Horarios
     */
    public void setHorario(ArrayList<FragmentoHorario> horario) {
        this.horario = horario;
    }

    /**
     * Metodo que se encarga de agregar horarios a la lista de Horarios
     *
     * @param fragmento El Horario a agregar
     */
    public void addHorario(FragmentoHorario fragmento) {
        this.horario.add(fragmento);
    }
}
